import { EnumThemeLayoutMode, EnumThemeHorizontalMenuPosition, EnumThemeAnimateMode } from '@/enum';
import type { ThemeLayoutMode, ThemeHorizontalMenuPosition, ThemeAnimateMode } from './enum';

/** 主题相关类型 */
export interface ThemeSetting {
    /** 布局样式 */
    layout: ThemeLayout;
    /** 固定头部和多页签 */
    fixedHeaderAndTab: boolean;
    /** 头部样式 */
    header: ThemeHeader;
    /** 侧边栏样式 */
    sider: ThemeSider;
    /** 菜单样式 */
    menu: ThemeMenu;
    /** 底部样式 */
    footer: ThemeFooter;
    /** 页面样式 */
    page: ThemePage;
}

/** 布局样式 */
interface ThemeLayout {
    /** 最小宽度 */
    minWidth: number;
    /** 布局模式 */
    mode: ThemeLayoutMode;
    /** 布局模式列表 */
    modeList: ThemeLayoutModeList[];
}
interface ThemeLayoutModeList {
    value: ThemeLayoutMode;
    label: EnumThemeLayoutMode;
}

/** 头部样式 */
interface ThemeHeader {
    /** 头部高度 */
    height: number;
}

/** 侧边栏样式 */
interface ThemeSider {
    /** 侧边栏宽度 */
    width: number;
    /** 侧边栏折叠时的宽度 */
    collapsedWidth: number;
    /** vertical-mix模式下侧边栏宽度 */
    mixWidth: number;
    /** vertical-mix模式下侧边栏折叠时的宽度 */
    mixCollapsedWidth: number;
    /** vertical-mix模式下侧边栏的子菜单的宽度 */
    mixChildMenuWidth: number;
}

/** 菜单样式 */
interface ThemeMenu {
    /** 水平模式的菜单的位置 */
    horizontalPosition: ThemeHorizontalMenuPosition;
    /** 水平模式的菜单的位置列表 */
    horizontalPositionList: ThemeHorizontalMenuPositionList[];
}
/** 水平模式的菜单的位置列表 */
interface ThemeHorizontalMenuPositionList {
    value: ThemeHorizontalMenuPosition;
    label: EnumThemeHorizontalMenuPosition;
}

/** 底部样式 */
interface ThemeFooter {
    /** 是否固定底部 */
    fixed: boolean;
    /** 底部高度 */
    height: number;
}

/** 页面样式 */
interface ThemePage {
    /** 页面是否开启动画 */
    animate: boolean;
    /** 动画类型 */
    animateMode: ThemeAnimateMode;
    /** 动画类型列表 */
    animateModeList: ThemeAnimateModeList[];
}
/** 动画类型列表 */
interface ThemeAnimateModeList {
    value: ThemeAnimateMode;
    label: EnumThemeAnimateMode;
}
